package com.cykj.admin.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.ocr_api20210707.Client;
import com.aliyun.ocr_api20210707.models.RecognizeBusinessLicenseRequest;
import com.aliyun.ocr_api20210707.models.RecognizeBusinessLicenseResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import org.springframework.stereotype.Component;

import java.io.InputStream;

@Component
public class OcrBusinessLicenseUtils {

    // 客户端创建逻辑不变（精简配置初始化）
    public static Client createClient() throws Exception {
        Config config = new Config()
                .setAccessKeyId("LTAI5t6jEcFtBiddoPHJEjAa")
                .setAccessKeySecret("lM2sBajxccPWiLWmxI16l8ZeBgHIi3")
                .setEndpoint("ocr-api.cn-hangzhou.aliyuncs.com");
        return new Client(config);
    }

    public static void main(String[] args) {
        String imgPath = "D:\\staticFile\\license\\617221239547072512.jpg"; // 图片路径可灵活修改

        // try-with-resources自动关闭流，避免资源泄漏
        try (InputStream imgStream = com.aliyun.darabonba.stream.Client.readFromFilePath(imgPath)) {
            Client client = createClient();
            RecognizeBusinessLicenseRequest request = new RecognizeBusinessLicenseRequest().setBody(imgStream);
            RuntimeOptions runtime = new RuntimeOptions();

            // 调用API获取响应
            RecognizeBusinessLicenseResponse resp = client.recognizeBusinessLicenseWithOptions(request, runtime);
            System.out.println("=== OCR接口响应状态 ===");
            System.out.println("请求ID：" + resp.getBody().getRequestId());
            System.out.println("状态码：" + resp.getStatusCode() + "\n");

            // 解析核心字段信息（关键路径：resp.body.data -> rootJson.data）
            String respDataStr = resp.getBody().getData();
            if (respDataStr == null || respDataStr.isEmpty()) {
                System.err.println("错误：接口未返回有效数据");
                return;
            }

            // 第一层解析：获取包含核心信息的根JSON
            JSONObject rootJson = JSON.parseObject(respDataStr);
            // 第二层解析：直接提取"核心字段信息"（对应rootJson中的"data"字段）
            JSONObject businessCoreInfo = rootJson.getJSONObject("data");
            System.out.println("成立时间："+businessCoreInfo.getString("RegistrationDate"));


            // 空值判断：避免核心信息未识别的情况
//            if (businessCoreInfo == null) {
//                System.err.println("错误：未从响应中解析到营业执照核心信息");
//                return;
//            }

            // 仅输出核心字段信息（格式化JSON，便于阅读）
//            System.out.println("=== 营业执照核心字段信息（格式化）===");
//            String companyName1 = businessCoreInfo.getString("companyName");
//            System.out.println("公司名称"+companyName1);
//            System.out.println(JSON.toJSONString(businessCoreInfo, true));
//
//            // 保留核心字段"公司名称"的单独快速输出
//            String companyName = businessCoreInfo.getString("companyName");
//            System.out.println("\n=== 核心字段：公司名称 ===");
//            System.out.println(companyName != null ? companyName : "未识别到公司名称");

        } catch (TeaException e) {
            // API调用异常（阿里云OCR接口特有异常）
            System.err.println("=== API调用异常（TeaException）===");
            System.err.println("错误信息：" + e.getMessage());
            System.err.println("诊断建议：" + (e.getData() != null ? e.getData().get("Recommend") : "无"));
        } catch (Exception e) {
            // 系统异常（如文件读取失败、JSON解析错误等）
            System.err.println("=== 系统异常 ===");
            System.err.println("错误信息：" + e.getMessage());
            e.printStackTrace();
        }
    }
}